package com.eco
{
	import com.eco.*;
	import com.greensock.*;
	import com.greensock.easing.*;
	
	import flash.display.Sprite;
	import flash.events.*;
	
	//基本物体，游戏中所有互动（带有碰撞效果的）元素的基类
	public class RigidBall extends Sprite
	{
		//物体的当前参数，不论物体处于什么状态，这组参数总能反应玩家所见的效果
		public var iMass:int;//质量
		public var nRadius:int;//半径
		public var v2dSpeed:MyVector2D;//速度向量
		
		//一些标定物体状态的变量
		private var iTag:int;
		public var bConflicting:Boolean;//表示物体是否能够与其他物体发生碰撞，true为能够
		
		//一些用于计算的辅助变量
		private var nSpd:Number;
		private var nDY:Number;
		private var nDX:Number;
		private var nDL:Number;
		private var bCollisionTag:Boolean;
		private var bCollisionTagPre:Boolean;
		
			
		public function RigidBall( mass:Number = 10, r:int = 5)
		{
			//构造函数
			
			//初始化刚体的一些物理参数
			iMass = mass;
			nRadius = r;
			v2dSpeed = new MyVector2D( 0, 0);
			
			//位置
			x = 0;
			y = 0;
			
			//物体状态
			iTag = 25;
			bConflicting = true;
			bCollisionTag = true;
			bCollisionTagPre = true;
		}
		
		protected function Move():void
		{
			//移动函数
			x += v2dSpeed.x;
			y += v2dSpeed.y;
		}
		
		protected function Rotate():void
		{
			//自身旋转函数
			var _rotation = v2dSpeed.getAngle()/Math.PI*180;

			TweenLite.to(this, 0.02, {rotation:_rotation, ease:Elastic.easeInOut});
		}
		
		protected function Friction( rate:Number = 0.8 ):void
		{
			//应用摩擦模拟，减小速度
			if( v2dSpeed.getLength() <= 0.005 )
			{
				v2dSpeed.x = 0;
				v2dSpeed.y = 0;
			}
			else
			{
				v2dSpeed.scale(rate);
			}
		}
	}
}